/*
 * 查询
 */
Ext.onReady(function() {

	Ext.QuickTips.init();
	var v_start=0, v_limit=20;
	
	var sysDataBooleanStore = new Ext.data.JsonStore({
	    xtype:'jsonstore',
		url: i1510.contextPath + '/admin/sysData/listExt.do?docStatus=10&fdParentCode=BOOLEAN',
	    root: 'root',
	    totalProperty: 'total',
	    fields: ['fdCode','docSubject'],
		autoLoad:true
	});
    
	// sysRole 表单 Start
	
	
	//add表单
    var addForm = new Ext.FormPanel({
		layout : 'form',
		frame:true,
		labelWidth:60,
		border : false,
		padding : '15 10 0 8',
		defaults : {
			anchor : '100%'
		},
		items:[{
			xtype : 'textfield',
			name:'docSubject',
			fieldLabel:'角色名称',
			allowBlank : false,
			maxLength :20
		},{
			xtype:'combo',
			hiddenName:'defFlag',//如果不设置就会提交displayField的值
			name:'defFlag',
			fieldLabel:'是否默认角色',
			mode: 'local',
			maxLength :10,
			triggerAction: 'all',
			valueField :'fdCode',
			displayField: 'docSubject',
			emptyText: '请选择',
			editable : false,
			store : sysDataBooleanStore
		},{
			xtype : 'textarea',
			name:'descs',
			fieldLabel:'描&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;述',
			height:100,
			maxLength :200
		},{
			xtype : 'hidden',
		    name : 'docId'
		}]
	});
    var fn_submit = function(next){

		if (addForm.getForm().isValid()) {
			addForm.getForm().submit({
			    url: i1510.contextPath+'/admin/sysRole/save.do',
				success : function(form, rtn) {
					
					if(next){
				   		addForm.getForm().reset();
					}else{
						addWin.hide();
					}
				   	//刷新list
				   	listStore.reload();
				   
				},
				failure : function(form, rtn) {
					Ext.Msg.alert('信息提示','连接失败.'+rtn.result.message);
				},
				waitTitle : '提交',
				waitMsg : '正在保存数据，稍后...'
			});
		}
	}
	//增加窗口
    var addWin = new Ext.Window({
		title : '新增/修改',
		width:550,
		height:370,
		closeAction:'hide',
		modal : true,
		border:false,
		resizable : false,
		layout : 'fit',
		buttonAlign : 'center',
		items : [addForm],
		buttons : [{
			text : '保存并新增',
			handler : function() {
				fn_submit(true);
			}
		},{
			text : '保存',
			handler : function() {
				fn_submit(false);
			}
		}, {
			text : '取消',
			handler : function() {
				addWin.hide();
			}
		}]
	});
	
	
	// sysRole 表单 End

	

	// 查询表单
	var searchForm = new Ext.FormPanel({
		region : "north",
		height : 80,
		border : false,
		layout : "form",
		padding : "5 20 0 20",
		items : [ {
			xtype : "fieldset",
			title : "查询设置",
			padding : "0 20 0 15",
			items : [ {
				layout : "column",
				defaults : {
					xtype : "container",
					autoEl : "div",
					labelAlign : "right",
					layout : "form"
				},
				items : [ {
					width : 310,
					items : [ {
						width : 180,
						labelWidth : 100,
						xtype : "textfield",
						name : "sDocSubject",
						fieldLabel : "角色名称"
					} ]
				}, {
					width : 250,
					items : [ {
						width : 75,
						xtype : "button",
						iconCls : "btn-list",
						text : "查询",
						handler : function() {
							var f = searchForm.getForm();
							if (f.isValid()) {
								listStore.load({
									params : f.getValues()
								});
							}
						}
					} ]
				} ]
			} ]
		} ]
	});
	// 数据映射
	var mapObj = [ {
		name : 'docId',
		type : 'string'
	}, {
		name : 'docSubject',
		type : 'string'
	}, {
		name : 'docCreateTime',
		type : 'string'
	}, {
		name : 'docLastTime',
		type : 'string'
	},{
		name : 'defFlag',
		type : 'string'
	}, {
		name : 'docStatus',
		type : 'string'
	}, {
		name : 'descs',
		type : 'string'
	}];

	// 列表数据
	var listStore = new Ext.data.JsonStore({
		url : i1510.contextPath + '/admin/sysRole/listExt.do',
		root : 'root',
		totalProperty : 'total',
		fields : mapObj
	});
	// 在listStore执行前添加查询参数
	listStore.on('beforeload', function() {
		var f = searchForm.getForm();
		if (f.isValid()) {
			listStore.baseParams = f.getValues();
		}

	});
	//list 新增
	function fn_add(){
		addWin.show();
		addForm.getForm().reset();
	}
	//list 更新
	function fn_update(){
		var record = listGrid.getSelectionModel().getSelected();
		if (!record) {
			Ext.Msg.alert('信息提示', '请选择要修改的数据');
		} else {
			addWin.show();
			addForm.getForm().loadRecord(record);
				
		}
	}
	//list 删除
	function fn_del(varStatus){
		var record = listGrid.getSelectionModel().getSelected();
		if (!record) {
			Ext.Msg.alert('信息提示', '请选择要修改的数据');
		} else {
			Ext.MessageBox.confirm('修改提示', '是否修改该用户状态？', function(c) {
				if (c == 'yes') {
					Ext.Ajax.request({
						url : i1510.contextPath + '/admin/sysRole/updateStatus.do',
						params : {
							docId : record.get("docId"),
							docStatus:varStatus
						},
						success : function() {
							listStore.reload();
						}
					});
				}
			});
		}
	}
	var tree = new Ext.tree.TreePanel({
        autoScroll:true,
        animate:false,
        enableDD:false,
        rootVisible: false,
        containerScroll: true,
        checkModel : 'cascade',
        frame:true,
        root: new Ext.tree.AsyncTreeNode({
			draggable : false,
			checked : false,
			id : '0000'
		}),
        loader : new Ext.tree.TreeLoader({
			baseAttrs : {
				uiProvider : Ext.tree.TreeCheckNodeUI
			},
			dataUrl : '..',
			baseParams : {}
		})
	});
	var rolePopWindow = new Ext.Window({
		layout : 'fit',
		width : 400,
		height : 500,
		title : '分配功能',
		closeAction : 'hide',
		modal : true,
		items : [tree],
		buttons : [{
			text : '提交',
			pressed : true,
			enableToggle : true,
			handler : function() {
				var popIds = "";
				var childNodes = tree.getChecked();
				for (var i = 0; i < childNodes.length; i++) {
					if(i!=0){
						popIds += ",";	
					}
					popIds += childNodes[i].id;
				}
				Ext.Ajax.request({
		   			url : i1510.contextPath + '/admin/sysRole/saveRolePop.do',
		   			params:{ 
		   				docId : rolePopWindow.docId, 
		   				popIds : popIds 
		   			},
		   			success : function(response, action) {
						Ext.Msg.alert('信息提示',"保存成功!");
		   				rolePopWindow.hide();
		   			}
		   		});
			}
		}, {
			text : '关闭',
			pressed : true,
			enableToggle : true,
			handler : function() {
				rolePopWindow.hide();
			}
		}]
	});
	// 列表
	var listGrid = new Ext.grid.GridPanel({
		id : "listGrid",
		store : listStore,
		cm : new Ext.grid.ColumnModel({
			defaults : {
				menuDisabled : true
			},// 禁止表头菜单
			columns : [ {
				header : 'ID',
				sortable : true,
				dataIndex : 'docId',
				hidden : true
			}, {
				header : '角色名称',
				sortable : true,
				dataIndex : 'docSubject'
			}, {
				header : '创建时间',
				sortable : true,
				dataIndex : 'docCreateTime'
			}, {
				header : '修改时间',
				sortable : true,
				dataIndex : 'docLastTime'
			}, {
				header : '是否默认角色',
				sortable : true,
				dataIndex : 'defFlag',
				renderer:fn_booleanExt
			}, {
				header : '状态',
				sortable : true,
				dataIndex : 'docStatus',
				renderer:fn_docStatusExt
			},{
	            xtype: 'actioncolumn',
	            header : '权限设置',
	            width: 150,
	            align : 'center',
				menuDisabled : true,
	            items: [{
	                icon   : i1510.contextPath+'/common/images/ext3/btn/edit2.gif', 
	                tooltip: '权限设置',
	                handler: function(grid, rowIndex, colIndex) {
	                    var record = listStore.getAt(rowIndex);
	                    var docId = record.get('docId')
	                	rolePopWindow.show(null,function(){
							tree.loader.dataUrl =  i1510.contextPath + '/admin/sysRole/findTreeChecked.do?docId='+ docId;
							tree.getLoader().load(tree.root, function() {
								tree.root.expand(true, true);
							});
	                	});
	                	rolePopWindow.docId = docId;
	                }
	            }]
	        }]
		}),
		stripeRows : true, // 行分隔符
		columnLines : true, // 列分隔符
		loadMask : true,	//加载时的遮罩
		frame : true,
		height : 150,
		margins : "10 20 5 20",
		style : "border:1px solid",
		region : "center",
		listeners : {
			render : function() {
				var f = searchForm.getForm();
				if (f.isValid()) {
					listStore.load({
						params : f.getValues()
					});
				}
				// listStore.load({params:searchForm.getForm().getValues()});
			},
        	rowdblclick:function(){
        		fn_update();
        	}
		},
		iconCls : 'menu-62',

		tbar : [ {
			text : '增加',
			iconCls : 'btn-add',
			handler : function() {
				fn_add();
			}
		}, '-', {
			text : '修改',
			iconCls : 'btn-edit',
			handler : function() {
				fn_update();
			}
		}, '-', {
			text : '激活',
			iconCls : 'clock',
			handler : function() {
				fn_del("10");
			}
		}, '-', {
			text : '删除',
			iconCls : 'btn-remove',
			handler : function() {
				fn_del("00");
			}
		}  ],

		bbar : new Ext.PagingToolbar({
			pageSize : v_limit,
			store : listStore,
			displayInfo : true
		})
	});

	// 布局
	new Ext.Viewport({
		layout : "fit",
		items : [ {
			frame : true,
			title : "信息查询",
			iconCls : 'menu-62',
			layout : "border",
			items : [ searchForm, listGrid ]
		} ]
	});

});